import axios from 'axios';
// axios 是什么？ 
// Axios，是一个基于promise的网络请求库，作用于node.js和浏览器中
// 易用、简洁且高效的http库
// 支持node端和浏览器端
// 丰富的配置项

// 什么需要二次封装 ？

// 如何 axios 二次封装 

// 创建实例
export const request = axios.create({
  // 超时时间
  timeout: 5000,
  // 超时文字提示
  timeoutErrorMessage: '请求超时....'
});


// 请求拦截器
request.interceptors.request.use((config) => {
  // 请求头携带 token
  const token = localStorage.getItem('token');
  if (token) {
    config.headers.token = token
  }
  return config
})

// 响应拦截器
request.interceptors.response.use((response) => {
  console.log('response', response)
  if (response && response.data) {
    // 前后端约定的状态码
    const { code } = response.data;
    switch (code) {
      case 200:
        console.log('请求成功')
          ; break;
      case 400:
        console.log('客户端错误'); break;
      case 401:
        console.log('token 失效'); break;
      case 403:
        console.log('用户没有权限'); break;
      case 500:
        console.log('服务端错误'); break;
    }

  }
  return response
})
